import store from "../store";

const baseURL = "https://pcapi-xiaotuxian-front-devtest.itheima.net";
const request = {
  invoke(args) {
    uni.showLoading({ title: "加载中" });

    if (!args.url.startsWith("http")) {
      // 如果你的请求的url 不是以http开头，那么我就帮你补全url
      args.url = baseURL + args.url;
    }
    args.header = {
      ...args.header, // 保留原本的 header
      "source-client": "miniapp", // 添加小程序端调用标识
    };
    //判断vuex中有没有token 有就自动携带到请求头中  单独引入store文件中即可
    if (store.state.user.userInfo && store.state.user.userInfo.token) {
      args.header.Authorization = store.state.user.userInfo.token
    } else {
      console.log("没有token");
    }
  },
  complete(res) {
    uni.hideLoading();
  },
};
uni.addInterceptor("request", request);
uni.addInterceptor("uploadFile", request);

export default (options) => {
  return new Promise((resolve, reject) => {
    // uniapi 如果有返回值 返回值是一个数组
    //      const arr= await uni.request();

    // 但是 如果你没有直接使用 await 的 话  ，而是传统的success，返回值 就//
    uni.request({
      ...options,
      success(res) {
        // 是正常的对象
        // 判断 响应状态码  200-300之内 就是正常的请求
        if (res.statusCode >= 200 && res.statusCode < 300) {
          resolve(res.data);
        } else {
          //判断是不是没有token错误 401
          if (res.statusCode === 401) {
            //跳转到登录页面
            uni.navigateTo({ url: "/pages/login/index" })
          }
          // 错误了
          reject(res);
        }
      },
      fail(err) {
        reject(err);
      },
    });
  });
};
